home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume23 / smiley / part01 next >
Encoding:
Text File  |  1991-10-21  |  59.3 KB  |  2,167 lines

  1. Newsgroups: comp.sources.misc
  2. From: dws@cs.wisc.edu (DaviD W. Sanderson)
  3. Subject:  v23i102:  smiley - smiley server, version 4, Part01/01
  4. Message-ID: <1991Oct22.033215.1939@sparky.imd.sterling.com>
  5. X-Md4-Signature: 30ae782918b11808204e363618389090
  6. Date: Tue, 22 Oct 1991 03:32:15 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: dws@cs.wisc.edu (DaviD W. Sanderson)
  10. Posting-number: Volume 23, Issue 102
  11. Archive-name: smiley/part01
  12. Environment: UNIX
  13. Supersedes: smiley: Volume 20, Issue 73
  14.  
  15. smiley(1) is a "smiley server" I wrote for my own pleasure.
  16. Its list of smileys is more comprehensive than any other I have seen;
  17. it subsumes all the smiley lists I have ever seen posted to the net.
  18.  
  19. This version has about fifty more smileys than version 3,
  20. (589 faces, 818 definitions) and a better README file.
  21. Keep those smileys coming!
  22.  
  23. DaviD W. Sanderson (dws@cs.wisc.edu)
  24.  
  25. #! /bin/sh
  26. # This is a shell archive.  Remove anything before this line, then unpack
  27. # it by saving it into a file and typing "sh file".  To overwrite existing
  28. # files, type "sh file -c".  You can also feed this as standard input via
  29. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  30. # will see the following message at the end:
  31. #        "End of shell archive."
  32. # Contents:  README Makefile faces.in smiley.1 other.uu bsearch.c
  33. #   getopt.c ltoa.c smiley.c mkfaces.c patchlevel.h smiley.h
  34. # Wrapped by dws@margay on Wed Oct 16 14:23:54 1991
  35. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  36. if test -f 'README' -a "${1}" != "-c" ; then 
  37.   echo shar: Will not clobber existing file \"'README'\"
  38. else
  39. echo shar: Extracting \"'README'\" \(4067 characters\)
  40. sed "s/^X//" >'README' <<'END_OF_FILE'
  41. Xsmiley server, version 4
  42. X
  43. XThis version has about fifty more smileys than version 3.
  44. XThe file "other" is now shipped in uuencoded form since it
  45. Xcontains control characters for a few animated smileys.
  46. X
  47. XDESCRIPTION
  48. X
  49. Xsmiley(1) is a "smiley server" I wrote for my own pleasure.  It can
  50. Xexplain any smiley it knows, or print one it knows at random.  I use
  51. Xit to generate a random prompt when there is a status line available
  52. Xto hold the information I would otherwise put into my prompt.  Hence
  53. Xsmiley(1) does not contain the invisible smiley or any multi-line
  54. Xsmileys.
  55. X
  56. XThe list of smileys in faces.in is more comprehensive than I have seen
  57. Xanywhere else, largely because it is a superset of all the smiley lists
  58. XI have ever seen posted on the net.  I have lost some of the original
  59. Xattributions; the articles whose headers I have retained are these:
  60. X
  61. X    Message-ID: <76@icus.UUCP>
  62. X    Message-ID: <1990Sep11.102411.8537@diku.dk>
  63. X    Message-ID: <39917@cci632.UUCP>
  64. X    Message-ID: <1990Sep14.122955.558@diku.dk>
  65. X    Message-ID: <9366@uhccux.uhcc.Hawaii.Edu>
  66. X    Message-ID: <2005@unsvax.NEVADA.EDU>
  67. X    Message-ID: <1991Mar18.212208.27911@odin.corp.sgi.com>
  68. X
  69. X    From: csh068@uk.ac.cov.cck (Smiley)
  70. X    Message-ID: <$V5&&|$@cck.cov.ac.uk>
  71. X    Date: 17 Apr 91 08:45:26 GMT
  72. X
  73. X    From: raymond@cosc.canterbury.ac.nz (cantva)
  74. X    Message-ID: <1991May18.150401.771@csc.canterbury.ac.nz>
  75. X    Date: 18 May 91 03:03:59 GMT
  76. X
  77. XIn the interest of completeness and to the best of my knowledge (I
  78. Xstarted this collection several years ago) I have not "censored" the
  79. Xsmileys, so there may be smileys you find offensive.  I certainly find
  80. Xsome of them offensive!
  81. X
  82. XThe smileys are processed by mkfaces and deliberately embedded in the
  83. Xexecutable - it does not have to locate and parse an external data
  84. Xfile.  In order to minimize the size of the executable, smiley.c does
  85. Xnot use standard I/O.  I will ignore complaints about this; I do not
  86. Xanticipate ever using this program on a non-UNIX system.
  87. X
  88. XI happened to take the included getopt.c from the rkive sources; it was
  89. Xoriginally posted to comp.sources.unix in volume3.  It is preferable to
  90. Xthe getopt() provided on some systems as it does not use standard I/O.
  91. X
  92. XThe bsearch.c is from emx.utexas.edu:pub/mnt/src/lib/libposix, obtained
  93. XTue Mar 19 14:18:28 CST 1991
  94. X
  95. XTERMS
  96. X
  97. XThis package (excluding getopt.c and bsearch.c) is
  98. X
  99. X(C) Copyright 1991 by DaviD W. Sanderson.
  100. X
  101. XYou may copy it and use it for your own enjoyment.
  102. XYou may not represent it as your own work or sell it.
  103. X
  104. XAUTHOR
  105. X
  106. XDaviD W. Sanderson (dws@cs.wisc.edu)
  107. X
  108. XDOCUMENTATION
  109. X
  110. XThis section is mainly intended for novices (more experienced people
  111. Xwill already know all this).
  112. X
  113. XBesides this file, there are two sources of information about what
  114. Xoptions smiley(1) takes.
  115. X
  116. X1) The file smiley.1 is the nroff/troff source for the man page for
  117. Xsmiley(1).  The exact command to format it on your system may vary,
  118. Xbut will typically be something like this:
  119. X
  120. X    # format for viewing at the terminal
  121. X    $ nroff -man smiley.1 | more
  122. Xor
  123. X    # typeset and send to the printer named "lps1"
  124. X    $ ditroff -Plps1 -man smiley.1
  125. X
  126. X2) The program itself prints a help message when you give it an illegal
  127. Xoption.  Since it uses getopt(3) to process its options, the "-?" option
  128. Xis always illegal.  (All programs using getopt(3) to process their
  129. Xoptions really *ought* to print some sort of help message when given -?,
  130. Xthough not all of them do.)  For example:
  131. X
  132. X    $ smiley -?    # sh-like shells
  133. X    % smiley -\?    # csh-like shells force you to quote the ?
  134. X
  135. XAs it happens, the -h flag is not a legal argument to smiley(1), and
  136. Xrequires no quoting even in poor csh, so you can use that instead:
  137. X
  138. X    % smiley -h
  139. X
  140. XNow, since smiley(1) uses getopt(3), you can end the options with
  141. Xthe special option "--".  This allows you to give smileys on the
  142. Xcommand line that would otherwise be interpreted as options.  For
  143. Xexample, to get smiley(1) to explain the smiley "-=": 
  144. X
  145. X    $ smiley -=    # here "-=" is interpreted as an illegal option
  146. X    smiley: illegal option -- =
  147. X    [rest of help message deleted]
  148. X    $ smiley -- -=    # this works fine.
  149. X    -=    a doused candle (to end a flame)
  150. X    $
  151. END_OF_FILE
  152. if test 4067 -ne `wc -c <'README'`; then
  153.     echo shar: \"'README'\" unpacked with wrong size!
  154. fi
  155. # end of 'README'
  156. fi
  157. if test -f 'Makefile' -a "${1}" != "-c" ; then 
  158.   echo shar: Will not clobber existing file \"'Makefile'\"
  159. else
  160. echo shar: Extracting \"'Makefile'\" \(1205 characters\)
  161. sed "s/^X//" >'Makefile' <<'END_OF_FILE'
  162. X#-------
  163. X# M a k e f i l e
  164. X#
  165. X# DaviD W. Sanderson
  166. X#-------
  167. X
  168. X# some versions of make(1) care about this
  169. XSHELL          = /bin/sh
  170. X
  171. XMISC          = README        \
  172. X        Makefile    \
  173. X        faces.in
  174. X
  175. XMANUAL          = smiley.1
  176. X
  177. XGEN          = other.uu
  178. X
  179. XSOURCES          = bsearch.c    \
  180. X        getopt.c    \
  181. X        ltoa.c        \
  182. X        smiley.c    \
  183. X        mkfaces.c
  184. X
  185. XHEADERS          =    patchlevel.h    \
  186. X        smiley.h
  187. X
  188. XTARGET          =    smiley
  189. X
  190. XOBJECTS          =    bsearch.o    \
  191. X        faces.o        \
  192. X        getopt.o    \
  193. X        ltoa.o        \
  194. X        smiley.o
  195. X
  196. XCFLAGS          = -O
  197. X
  198. XLDFLAGS       = -s
  199. X
  200. Xall:        $(TARGET)
  201. X
  202. X$(TARGET):    $(OBJECTS)
  203. X        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJECTS)
  204. X
  205. Xsmiley.o:    smiley.c smiley.h patchlevel.h
  206. X        $(CC) $(CFLAGS) -c smiley.c
  207. X
  208. Xfaces.o:    faces.c smiley.h
  209. X        $(CC) $(CFLAGS) -c faces.c
  210. X
  211. X#OLD        ./mkfaces < faces.in > faces.c
  212. X#        play it safe and make sure the list is sorted,
  213. X#        since it is searched by bsearch(3):
  214. Xfaces.c:    mkfaces faces.in
  215. X        < faces.in sort | ./mkfaces > faces.c
  216. X
  217. Xmkfaces:    mkfaces.c
  218. X        $(CC) $(CFLAGS) -o mkfaces mkfaces.c
  219. X
  220. Xclean:
  221. X        rm -f $(OBJECTS) mkfaces faces.c smiley.shar $(GEN)
  222. X
  223. Xclobber:    clean
  224. X        rm -f $(TARGET)
  225. X
  226. Xother.uu:    other
  227. X        uuencode $? < $? > $@
  228. X
  229. Xsmiley.shar:    $(MISC) $(MANUAL) $(GEN) $(SOURCES) $(HEADERS)
  230. X        shar $(MISC) $(MANUAL) $(GEN) $(SOURCES) $(HEADERS) > $@
  231. END_OF_FILE
  232. if test 1205 -ne `wc -c <'Makefile'`; then
  233.     echo shar: \"'Makefile'\" unpacked with wrong size!
  234. fi
  235. # end of 'Makefile'
  236. fi
  237. if test -f 'faces.in' -a "${1}" != "-c" ; then 
  238.   echo shar: Will not clobber existing file \"'faces.in'\"
  239. else
  240. echo shar: Extracting \"'faces.in'\" \(23975 characters\)
  241. sed "s/^X//" >'faces.in' <<'END_OF_FILE'
  242. X    :-)    Willie Shoemaker
  243. X -(    always should wear safety glasses, especially in the laser burn-in room [entropy@fluke.UUCP]
  244. X!-(    black eye
  245. X!-|    "I-am-a-Cylon-Centurian-with-one-red-eye-bouncing-back-and-forth." [The Grey Wolf, greywolf@unisoft.com]
  246. X!.'v    (profile) flat top
  247. X#-)    partied all night
  248. X#:-)    for people whose hair is in a mess, like mine [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  249. X#:-)    smiley done by someone with matted hair [figmo@lll-crg.ARpA]
  250. X#:-o    "Oh, nooooooo!" (a la Mr. Bill) [Lynn Gold, figmo@lll-crg]
  251. X#:-o    smiley done by someone with matted hair
  252. X#:o+=    Betty Boop
  253. X$$    for academic jobs [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  254. X$$$    for industrial jobs [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  255. X$$$$    for people starting up their own company [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  256. X$-)    Alex P. Keaton (from "Family Ties")
  257. X$-)    won big at Las Vegas
  258. X$-)    won the lottery
  259. X$-)    yuppie
  260. X%    for bike accidents (a bit far-fetched, I suppose) [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  261. X%')    after drinking a fifth for lunch
  262. X%*@:-(    hung over
  263. X%*}    very drunk [jeanette@randvax]
  264. X%+{    lost a fight
  265. X%-(I)    laughing out loud
  266. X%-)    Elephant man
  267. X%-)    after staring at the terminal for 36 hours
  268. X%-)    broken glasses
  269. X%-)    cross-eyed
  270. X%-)    drunk with laughter
  271. X%-)    long bangs
  272. X%-6    braindead
  273. X%-<I>    drunk with laughter
  274. X%-\    hungover
  275. X%-^    Picasso
  276. X%-{    sad variation
  277. X%-|    been working all night
  278. X%-}    humor variation
  279. X%-~    Picasso
  280. X%\v    Picasso
  281. X&-|    tearful
  282. X&.(..    crying
  283. X&:-)    curly hair
  284. X'-)    one eyed man
  285. X'-)    only has a left eye, which is closed
  286. X'-)    wink
  287. X':-)    accidentally shaved off one of his eyebrows this morning
  288. X':-)    one eyebrow
  289. X'~;E    unspecified 4-legged critter
  290. X( o ) ( o )    hooters
  291. X(-)    needing a haircut
  292. X(-)    needs a haircut
  293. X(-:    Australian
  294. X(-:    Don Ellis from Tektronix
  295. X(-:    left-handed
  296. X(-::-)    Siamese twins
  297. X(-:|:-)    Siamese twins
  298. X(-E:    wearing bifocals [jeanette@randvax]
  299. X(-_-)    secret smile
  300. X(-o-)    Imperial Tie Fighter ("Star Wars")
  301. X(00)    mooning you
  302. X(8-)    wears glasses
  303. X(8-o    Mr. Bill
  304. X(8-{)}    glasses, moustache and a beard
  305. X(:  (=|    wearing a ghost costume
  306. X(:)-)    likes to scuba dive
  307. X(:)-)    scuba diving
  308. X(:+)    big nose
  309. X(:-    unsmiley frowning
  310. X(:-#    I am smiling and I have braces (watch out for the glare!)
  311. X(:-#    said something he shouldn't have
  312. X(:-$    ill
  313. X(:-&    angry
  314. X(:-(    frowning
  315. X(:-(    unsmiley frowning
  316. X(:-)    big-face
  317. X(:-)    no hair
  318. X(:-)    smiley big-face
  319. X(:-)    surprised
  320. X(:-)    wearing bicycle helmet
  321. X(:-*    kissing
  322. X(:-...    heart-broken
  323. X(:-D    blabber mouth
  324. X(:-I    egghead
  325. X(:-\    VERY sad
  326. X(:-{~    bearded
  327. X(:-|K-    formally attired
  328. X(:<)    blabber mouth
  329. X(:=)    TWO noses (?)
  330. X(:>-<    thief: hands up!
  331. X(:I    egghead
  332. X(:^(    broken nose
  333. X(@ @)    You're kidding!
  334. X(O--<    fishy
  335. X(V)=|    pacman champion
  336. X([(    Robocop
  337. X(}-8]    left-handed bearded smiley with glasses and headphones [Dave Straker, daves@hpopd.pwd.hp.com]
  338. X)    Cheshire cat
  339. X)8-)    scuba smiley big-face
  340. X):-(    unsmiley big-face
  341. X):-)    smiley big-face
  342. X*!#*!^*&:-)    a schizophrenic
  343. X**    for winter sports generally [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  344. X*-(    Cyclops got poked in the eye
  345. X*-)    shot dead
  346. X*8-)    Beaker (the Muppet lab assistant) [James Cameron]
  347. X*:*    fuzzy
  348. X*:**    fuzzy with a fuzzy mustache
  349. X*:o)    Bozo the Clown
  350. X*<.'v    (profile) wearing snow cap
  351. X*<8-)X    party outfit with hat and bow-tie [Andrew Williams, awilliam@qucis.queensu.ca]
  352. X*<:-)    Santa Claus
  353. X*<|:-)    Santa Claus (Ho Ho Ho)
  354. X*<|:-))    Santa Claus
  355. X*L*    blotto
  356. X*|    for oh what a beautiful sunset [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  357. X+-(:-)    Religious leader
  358. X+-(:-)    the Pope
  359. X+-:-)    priest
  360. X+:-)    priest
  361. X+:-)    smiley priest
  362. X+<.'v    (profile) knight
  363. X+<:-)    "Peace be upon you, my children..." [Ben Cranston, zben@umd2]
  364. X+<:-|    monk/nun
  365. X+<||-)    knight
  366. X+O:-)    the Pope
  367. X,-)    one eye ... and winking
  368. X,-)    other eyed man
  369. X,-}    wry and winking
  370. X,.'v    (profile) has short hair
  371. X,:-)    shaved his left eyebrow off this morning
  372. X-    Helen Keller
  373. X-  @=    messages about nuclear war
  374. X- -:-(    punk rocker (real punk rockers don't smile) (alternate version)
  375. X- -:-)    punk rocker (alternate version)
  376. X-)    Jose Feliciano
  377. X---...    SOS (variant)
  378. X---...---    SOS (really OSO, but retained anyway)
  379. X-:-(    punk rocker (real punk rockers don't smile)
  380. X-:-)    has mohawk
  381. X-:-)    punk rocker
  382. X-=    a doused candle (to end a flame)
  383. X-=#:-)    wizard
  384. X->-    for airline tickets going cheap [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  385. X->=:-)X    Zippy the Pinhead [Dyon Anniballi, dyon@batcomputer]
  386. X.'!    (profile) grim
  387. X.'"    (profile) pursing lips
  388. X.'J    (profile) smiling
  389. X.'P    (profile) sticking tongue out
  390. X.'T    (profile) keeping a straight face
  391. X.'U    (profile) yawning
  392. X.'V    (profile) shouting
  393. X.'Y    (profile) whistling
  394. X.'\    (profile) frowning
  395. X.'r    (profile) sticking tongue out
  396. X.'v    (profile) talking
  397. X.'w    (profile) speaking with forked tongue
  398. X.-(    always should wear safety glasses [Terrence Mason, entropy@fluke]
  399. X.-)    Sammy Davis, Jr.
  400. X.-)    one eye
  401. X.-]    one eye
  402. X...---...    SOS
  403. X.\/    duck variation
  404. X.^v    (profile) pointy nose
  405. X._)    suffering from Lorentz contraction (they're coming every ten minutes now)
  406. X._)    suffering from Lorentz contractions
  407. X/8^{~    hair line, glasses, moustache, and goatee [James Revell]
  408. X/:-|    Mr. Spock
  409. X/;-)    has one big thick cockeyed eyebrow [jeanette@randvax]
  410. X/\    for camping and backpacking [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  411. X0-(    scuba diver with a broken mask
  412. X0-)    Cyclops
  413. X0-)    arc-welder
  414. X0-)    scuba diver
  415. X0-)    smiley cyclops (scuba diver?)
  416. X0:-)    angel [ins_ajpo@jhunix.UUCP]
  417. X2B|^2B    message about Shakespeare
  418. X3   :-)    Bart Simpson [Liron Lightwood, r.lightwood@trl.oz.au]
  419. X3:*>    Rudolph the reindeer
  420. X3:-o    cow
  421. X3:[    mean pet smiley
  422. X3:]    pet smiley
  423. X3:o[    net.pets
  424. X4:-)    George Washington
  425. X5:-)    Elvis Presley
  426. X6\/)    elephant
  427. X7:)    Ronald Reagan
  428. X7:-)    Fred Flintstone
  429. X7:^]    Ronald Reagan
  430. X8    infinity
  431. X8 :-)    wizard
  432. X8 :-I    net.unix-wizards
  433. X8(:-)    Mousketeer
  434. X8(:-)    Walt Disney
  435. X8)    frog
  436. X8*)    glasses and a moustache [ins_ajpo@jhunix.UUCP]
  437. X8-#    death
  438. X8-)    excited
  439. X8-)    glasses
  440. X8-)    sunglasses
  441. X8-)    swimmer
  442. X8-)    wide-eyed look [figmo@lll-crg.ARpA]
  443. X8-*    just ate a hot pepper
  444. X8-O    "Omigod!!" (done after "rm -rf *" ?)
  445. X8-O    took too many nodoz to work on thesis
  446. X8-O  --*    just before doubling over with pain [David Gundlach, david@marie.stat.uga.edu]
  447. X8-P    reaction to College Cafeteria Coffee [The Grey Wolf, greywolf@unisoft.com]
  448. X8-]    "wow, maaan"
  449. X8-o    Mr. Bill
  450. X8-|    eyes wide with surprise
  451. X8-|    suspense
  452. X8:)    pig [The Grey Wolf, greywolf@unisoft.com]
  453. X8:-)    glasses on forehead
  454. X8:-)    little girl
  455. X8:]    gorilla
  456. X8=:-)    Galloping Gourmet
  457. X8=:-)    chef
  458. X8===>    dickhead
  459. X8P    bullfrog in mating season
  460. X8^    chicken [jeanette@randvax]
  461. X8_)    don't get your nose out of joint [Andrew Williams, awilliam@qucis.queensu.ca]
  462. X8b    bullfrog in mating season
  463. X: )    leper
  464. X:###)    Jimmy Durante
  465. X:$)    Donald Trump
  466. X:%)    an accountant
  467. X:%)%    has acne
  468. X:'-(    crying
  469. X:'-)    crying with happiness
  470. X:'O    Bob Hope [Charles J. Lord, cjl@ecsvax.uncecs.edu]
  471. X:'}    Richard Nixon [Charles J. Lord, cjl@ecsvax.uncecs.edu]
  472. X:(    sad
  473. X:)    cheshire cat smile
  474. X:)    happy
  475. X:)    midget smiley
  476. X:)    salamander
  477. X:*    kisses
  478. X:*)    Ed McMahon
  479. X:*)    drunk
  480. X:*)    drunk smiling face, for those of us who like get intoxicated before or while reading netnews
  481. X:*)    everyman
  482. X:*)    smile with moustache [ins_ajpo@jhunix.UUCP]
  483. X:+(    punched nose, hurt
  484. X:+)    Carl Friedrich Gauss 
  485. X:,(    crying
  486. X:-    male
  487. X:-    prolog programmer [Jeff Winslow, jeffw@midas.UUCP]
  488. X:-!    bland face
  489. X:-!    smiley bland face
  490. X:-"    heavy smoker
  491. X:-"    pursing lips
  492. X:-#    braces
  493. X:-#    mouth zipped
  494. X:-#    my lips are sealed
  495. X:-#    punched in the mouth
  496. X:-#|    bushy mustache
  497. X:-#|    smiley face with bushy mustache
  498. X:-$    mouth wired shut
  499. X:-$    smiley face with it's mouth wired shut
  500. X:-$    uncertainty
  501. X:-%    banker
  502. X:-%    bearded
  503. X:-%    smiley banker
  504. X:-%    talking out of both sides of mouth
  505. X:-&    tongue-tied
  506. X:-'    smoker
  507. X:-'|    has a cold
  508. X:-(    Drama
  509. X:-(    boo hoo
  510. X:-(    frowning
  511. X:-(    has read too many 'smiley' articles
  512. X:-(    mad
  513. X:-(    sad
  514. X:-(    sad face, 'that comment makes me sad (mad)'
  515. X:-(    un-smiley
  516. X:-(  )    You backed your car over my toe
  517. X:-(  :-    impotent (or let down) [David Gundlach, david@marie.stat.uga.edu]
  518. X:-( )    You stepped on my toe
  519. X:-()    I stubbed my toe
  520. X:-(*)    sick of netnews articles, about to vomit
  521. X:-(0)    yelling
  522. X:-(=)    big teeth
  523. X:-(O)    yelling
  524. X:-)    Comedy
  525. X:-)    Your basic smiley. This smiley is used to inflect a sarcastic or joking statement since we can't hear voice inflection over Unix.
  526. X:-)    ha ha
  527. X:-)    happy
  528. X:-)    humorous
  529. X:-)    smiley standard
  530. X:-)    smiling
  531. X:-)    the normal smiling face, appended to a sentence or an article means 'this is a joke' or 'this is supposed to make you laugh'
  532. X:-)   ,    outie belly button
  533. X:-)   .    innie belly button
  534. X:-)   8    Dolly Parton
  535. X:-)   <    slut
  536. X:-)   <  ...  :-)   <  ...  :-)   <  ...    nymphomaniac
  537. X:-)   >    celibate
  538. X:-)  -8    blue balls [David Gundlach, david@marie.stat.uga.edu]
  539. X:-)  -:    smiley with an erection [David Gundlach, david@marie.stat.uga.edu]
  540. X:-)  -^-:    in need of some corrective surgery [David Gundlach, david@marie.stat.uga.edu]
  541. X:-)  :-...    taking a leak [David Gundlach, david@marie.stat.uga.edu]
  542. X:-) )-:    masking theatrical comments
  543. X:-) ---    John Holmes
  544. X:-) ... :-( ... :-) ... :-( ...    manic depressive
  545. X:-) 8  -    female [David Gundlach, david@marie.stat.uga.edu]
  546. X:-) :-) :-)    loud guffaw
  547. X:-)!!!    Sam Kinnison
  548. X:-)'    drooling
  549. X:-))    double chin
  550. X:-)))    William Conrad
  551. X:-)))    very overweight
  552. X:-)--    98-pound weakling
  553. X:-)-8    big girl
  554. X:-)-O    smiling doctor with stethoscope
  555. X:-)-{8    big girl
  556. X:-)-}8    big girl
  557. X:-)8    man with bowtie
  558. X:-)8    well dressed
  559. X:-)==    Arnold Schwarzenegger
  560. X:-)X    wearing a bowtie
  561. X:-)}    has goatee/beard
  562. X:-)~    drooling
  563. X:-*    Oops!
  564. X:-*    Oops! (covering mouth with hand)
  565. X:-*    after eating something bitter or sour
  566. X:-,    "Hmmmm."
  567. X:-,    smirking
  568. X:--)    Jamie Farr (Klinger from M*A*S*H)
  569. X:------------)    big liar
  570. X:-/    lefty undecided smiley
  571. X:-/    skeptical
  572. X:-0    No Yelling! (Quiet Lab)
  573. X:-0    orator
  574. X:-0    smiley orator
  575. X:-0    user can't find shift key
  576. X:-1    bland face
  577. X:-1    smiley bland face
  578. X:-6    after eating something sour
  579. X:-6    smiley after eating something sour
  580. X:-7    smiley after a wry statement
  581. X:-7    smokes a pipe
  582. X:-7    talking out of side of mouth
  583. X:-7    wry face
  584. X:-8    talking out both sides of your mouth
  585. X:-8(    condescending stare
  586. X:-9    licking its lips
  587. X:-9    smiley licking it's lips
  588. X:-:    mutant
  589. X:-:    mutant smiley
  590. X:-:    toothless
  591. X:-<    frowning
  592. X:-<    moustache
  593. X:-<    real sad
  594. X:-<    real sad smiley
  595. X:-=)    Adolph Hitler
  596. X:-=)    older smiley with mustache
  597. X:->    biting sarcastic face
  598. X:->    deformed lips
  599. X:->    happy
  600. X:->    hey hey
  601. X:->    yet another smiley
  602. X:->X==|    smiley formalware [Peter da Silva, peter@ficc.ferranti.com]
  603. X:-?    smiley smoking a pipe
  604. X:-?    smoking a pipe
  605. X:-@    "I swear"
  606. X:-@    beard has permanent wave *or* was drawn by Picasso.
  607. X:-@    extremely angry
  608. X:-@    screaming
  609. X:-@    smiley face screaming
  610. X:-@    swearing
  611. X:-B    drooling
  612. X:-C    just totally unbelieving
  613. X:-C    really bummed out
  614. X:-D    big smile
  615. X:-D    laughing (at you!)
  616. X:-D    said with a smile
  617. X:-D    talking too much
  618. X:-D    wider happy face [figmo@lll-crg.ARpA]
  619. X:-E    bucktoothed vampire
  620. X:-E    has major dental problems
  621. X:-F    bucktoothed vampire with one tooth missing
  622. X:-G-    smoking cigarettes
  623. X:-I    hmm
  624. X:-I    indifferent
  625. X:-I    thinking
  626. X:-J    tongue-in-cheek comments
  627. X:-M    speaking no evil
  628. X:-O    Mr. Bill
  629. X:-O    Wow!
  630. X:-O    birth
  631. X:-O    ohh, big mouth, Mick Jagger
  632. X:-O    uh oh
  633. X:-O>-o    smiley American tourist (note big mouth and camera)
  634. X:-P    Nyahhhh!
  635. X:-P    has a secret to tell you
  636. X:-P    nyah nyah
  637. X:-P    sticking out tongue
  638. X:-P    telling secrets
  639. X:-P    tongue hanging out in anticipation
  640. X:-Q    smoker
  641. X:-Q~    smoking
  642. X:-R    has the flu
  643. X:-S    just made an incoherent statement
  644. X:-T    keeping a straight face
  645. X:-T    keeping a straight face (tight-lipped)
  646. X:-V    shouting
  647. X:-W    speak with forked tongue
  648. X:-X    A big wet kiss!
  649. X:-X    bow tie
  650. X:-X    my lips are sealed
  651. X:-Y    a quiet aside
  652. X:-[    biting criticism
  653. X:-[    biting criticism smiling face, ditto for criticism
  654. X:-[    blockhead
  655. X:-[    pouting
  656. X:-[    sarcastic
  657. X:-[    un-smiley blockhead
  658. X:-[    vampire
  659. X:-\    Popeye
  660. X:-\    undecided smiley
  661. X:-\  8o    after a cold shower [David Gundlach, david@marie.stat.uga.edu]
  662. X:-]    biting sarcasm
  663. X:-]    biting sarcasm smiling face, used when sarcasm is intended, since we cannot inflect our voice over the net
  664. X:-]    blockhead
  665. X:-]    sarcastic
  666. X:-]    smiley blockhead
  667. X:-`    smiley spitting out its chewing tobacco
  668. X:-`    spitting out chewing tobacco
  669. X:-a    lefty smiley touching tongue to nose
  670. X:-b    left-pointing tongue
  671. X:-b    left-pointing tongue smiley
  672. X:-c    bummed out
  673. X:-c    real unhappy
  674. X:-d    lefty smiley razzing you
  675. X:-d~    smokes heavily
  676. X:-e    disappointed
  677. X:-e    disappointed smiley
  678. X:-f    sticking tongue out
  679. X:-i    semi-smiley
  680. X:-j    left smiling
  681. X:-j    left smiling smiley
  682. X:-k    beats me, looks like something, tho
  683. X:-k    beats me, looks like something, though
  684. X:-l    y.a.s.
  685. X:-l    yet another smiley
  686. X:-o    "Oh, nooooooo!" (a la Mr. Bill) [figmo@lll-crg.ARpA]
  687. X:-o    Mr. Bill
  688. X:-o    Uh oh!
  689. X:-o    Wow!
  690. X:-o    shocked
  691. X:-o    singing national anthem
  692. X:-o    smiley singing national anthem
  693. X:-o    surprise
  694. X:-o    yawn
  695. X:-o  ^^^^:    after zipping up fly too fast [David Gundlach, david@marie.stat.uga.edu]
  696. X:-p    smiley sticking its tongue out (at you!)
  697. X:-p~    smokes heavily
  698. X:-q    smiley trying to touch its tongue to its nose
  699. X:-q    trying to touch tongue to nose
  700. X:-r    sticking tongue out
  701. X:-s    after a BIZARRE comment
  702. X:-s    smiley after a BIZARRE comment
  703. X:-t    cross smiley
  704. X:-v    speaking
  705. X:-v    talking head smiley
  706. X:-w    speak with forked tongue
  707. X:-x    "my lips are sealed"
  708. X:-x    "my lips are sealed" smiley
  709. X:-x    kiss kiss
  710. X:-x    not telling any secrets
  711. X:-y    said with a smile
  712. X:-z    y.a.s.
  713. X:-z    yet another cross smiley
  714. X:-{    mustache
  715. X:-{    smiley variation on a theme
  716. X:-{  -__-:    after slamming the toilet seat [David Gundlach, david@marie.stat.uga.edu]
  717. X:-{#}    messages teasing people about their braces
  718. X:-{)    moustache
  719. X:-{)    normal smiling face with a moustache
  720. X:-{}    heavy lipstick
  721. X:-{~    has read too many of the toilet paper articles previous to lunch
  722. X:-|    "have an ordinary day"
  723. X:-|    "have an ordinary day" smiley
  724. X:-|    grim
  725. X:-|    no expression
  726. X:-|    no expression face, 'that comment doesn't phase me'
  727. X:-| 8( )-    pregnant female [David Gundlach, david@marie.stat.uga.edu]
  728. X:-||    angry
  729. X:-}    "Thish wine tashted pretty good"
  730. X:-}    beard
  731. X:-}    lipstick
  732. X:-}    normal smiling face with pretty lips
  733. X:-}    pretty lips
  734. X:-}    wears lipstick or some other lip appearance improving device
  735. X:-}  -oo-:    taking matters into hand [David Gundlach, david@marie.stat.uga.edu]
  736. X:-~)    has a cold
  737. X:/)    not funny
  738. X:/7)    Cyrano de Bergerac
  739. X:/i    no smoking
  740. X:3-<    dog
  741. X:8)    pig
  742. X::-)    wears glasses
  743. X:<    midget unsmiley
  744. X:<    what pretences!
  745. X:<()    African tribesman
  746. X:<)    from an Ivy League School
  747. X:<)=    for those with beards too
  748. X:<=    walrus
  749. X:<|    attends an Ivy League school
  750. X:= |    Baboon
  751. X:= |    baboon
  752. X:=)    has two noses
  753. X:=8)    baboon
  754. X:>    hmm, let me think...
  755. X:>    midget smiley
  756. X:>)    big nose
  757. X:?)    philosopher
  758. X:@    what?
  759. X:@)    pig
  760. X:C    what?
  761. X:D    laughter
  762. X:I    Hmmm, not funny!
  763. X:O    yelling
  764. X:Q    what?
  765. X:Q)    John Q. Public
  766. X:Ui    smoking
  767. X:Uj    smoking (and smiling)
  768. X:V    woodpecker
  769. X:V)    woodpecker
  770. X:X)    hearing no evil
  771. X:[    real downer
  772. X:]    Gleep...a friendly midget smiley who will gladly be your friend
  773. X:^(    has had his nose put out of joint; useful for replying to flames
  774. X:^)    3/4 view of person with elf-type sharp nose [The Grey Wolf, greywolf@unisoft.com]
  775. X:^)    broken nose
  776. X:^)    smiley with pointy nose (righty)
  777. X:^D    "Great! I like it!"
  778. X:^{    for those with moustaches
  779. X:^{)>    moustache and beard
  780. X:_)    nose sliding off face
  781. X:c)    big nose variant [Po-Jen J. Yang, pyang@rice.edu]
  782. X:c<    big nose variant [Po-Jen J. Yang, pyang@rice.edu]
  783. X:n)    funny-looking right nose
  784. X:q    vi user saying, "How do I get out of this damn emacs editor?" [Mark Baranowski, markb@giga.slc.unisys.com]
  785. X:u)    funny-looking left nose
  786. X:v)    left-pointing broken nose
  787. X:v)    left-pointing nose
  788. X:{    oh boy, the headmaster!...
  789. X:}    What should we call these? (what?)
  790. X:~(    nose put out of joint
  791. X:~)    Peter Ubberoth
  792. X:~)    needs a nosejob
  793. X:~)    pointy nose (righty)
  794. X:~)    smiling face needs a nosejob, no explanation necessary
  795. X:~)    ugly nose
  796. X:~-(    crying
  797. X:~-)    so happy, s/he is crying
  798. X:~/    really mixed up
  799. X;(    crying
  800. X;-(    'that makes me so mad that if I ever see you I'll punch your lights out'
  801. X;-(    beaten up
  802. X;-(    crying
  803. X;-(    sad face gets his lights punched out
  804. X;-(    sad or mad and got beat up
  805. X;-)    a practical joker who played one too many and got beat up
  806. X;-)    beaten up
  807. X;-)    could be pirate smiling face??
  808. X;-)    crying with happiness
  809. X;-)    getting fresh
  810. X;-)    sardonic incredulity
  811. X;-)    smiling face gets his lights punched out
  812. X;-)    winking
  813. X;-)  ===8    circumcised [David Gundlach, david@marie.stat.uga.edu]
  814. X;-)  o===8    braggart [David Gundlach, david@marie.stat.uga.edu]
  815. X;-D    a friendly, winking, laughing smile [pardo@cs.washington.edu]
  816. X;-\    Popeye beaten up
  817. X;-\    Popeye gets his lights punched out
  818. X;-|    beaten up but silent
  819. X;-|    no expression face gets his lights punched out
  820. X;-|    says nothing but still gets beat up
  821. X;-}    leer? (terminal dependent)
  822. X;^?    punched out
  823. X<&&>    message concerning rubber chickens
  824. X<*:oDX    clown with bowtie and dunce
  825. X<:-(    disappointed
  826. X<:-(    dunce
  827. X<:-)    Vietnamese peasant
  828. X<:-)    dumb questions
  829. X<:-)<<|    in a space rocket
  830. X<:-I    dunce
  831. X<:-O    Eeek!
  832. X<:>==    a turkey emoticon
  833. X<:I    dunce
  834. X<<<<(:-)    hat salesman
  835. X<=    for messages about housing in the Snow Belt [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  836. X<I==I)    on four wheels
  837. X<{:-)}    in a bottle
  838. X<|-(    Chinese and doesn't like these kind of jokes
  839. X<|-(=    Chinese and doesn't like this article
  840. X<|-(=    Chinese and unhappy
  841. X<|-)    Chinese
  842. X<|-)=    Chinese
  843. X=)    variation on a theme...
  844. X=):-)    Uncle Sam
  845. X=.'v    (profile) has mohawk
  846. X=0==    Mexican on a railroad!
  847. X=:-#}    punk rocker with a mustache
  848. X=:-#}    smiley punk with a mustache....
  849. X=:-(    punk rocker (real punk rockers don't smile)
  850. X=:-(    smiley punk-rocker (real punk rockers don't smile)
  851. X=:-)    hosehead
  852. X=:-)    punk rocker
  853. X=:-)    smiley punk-rocker
  854. X=:-H    football player
  855. X==#==    railroad crossings [Kenneth P. Brooks, <CSD.BROOKS at SU-SCORE>]
  856. X===:[OO']>:===    has been railroaded
  857. X=====:}    snake
  858. X=t==    Mexican run over by train
  859. X=|:-)    Abe Lincoln
  860. X=|:-)=    Abe Lincoln
  861. X>-    female
  862. X>-<    absolutely livid!!
  863. X>->    china man
  864. X>-^);>    fish
  865. X>:)    a little devil
  866. X>:*)    Bozo the Clown
  867. X>:-(    mad, annoyed
  868. X>:-(    sick and tired of reading this nonsense
  869. X>:-( 8  *>-    for disparaging opinions on feminists [Phil Barth, <ICL.BARTH at SU-SCORE>]
  870. X>:-)    devil [ins_ajpo@jhunix.UUCP]
  871. X>:-<    mad
  872. X>:->    devilish
  873. X>:-I    net.startrek
  874. X>:-b    left-pointing tongue smiley
  875. X>:^(    headhunter (Amazon style)
  876. X>;-)    devilish wink [ins_ajpo@jhunix.UUCP]
  877. X>;->    winky and devil combined. A very lewd remark was just made.
  878. X>< ><    about/to someone wearing argyle socks
  879. X>>-O->    General Custer
  880. X>>>>>:============    an asparagus [David J. Rood, rooddj@crtvax.vanderbilt.edu]
  881. X>[I    Television
  882. X>w    nose-thumbing gesture [jeffw@midas.UUCP]
  883. X>|(    Robocop: "Thank you for your co-operation." [Craig P McLaughlin, cpm00@duts.ccc.amdahl.com]
  884. X>|->    Chinese
  885. X?-(    about people with a black eye
  886. X?-(    has black eye
  887. X@%&$%&    You know what that means...
  888. X@%&$%&$\&*@%$#@    you know what that means...
  889. X@-(    "Ulysses!  Bring me Ulysses!" [Ben Cranston, zben@umd2]
  890. X@-)    Cyclops
  891. X@.'v    (profile) has curly hair
  892. X@:-)    Indian (East)
  893. X@:-)    wavy hair
  894. X@:-)    wearing a turban
  895. X@:I    turban
  896. X@=    flame about nuclear war, power or weapons follows (mushroom cloud) [figmo@lll-crg.ARpA]
  897. X@=    pro-nuclear war
  898. X@>--->----    a rose
  899. X@O=E<=    woman in skirt wearing turtleneck sweater [DJ Delorie, dj@ctron.com]
  900. X@l@    too many hours at terminal
  901. XB)    frog wearing sunglasses
  902. XB-(8    Sir Robin Day (a British BBC TV presenter, famed for his grumpy countenance, and who wears glasses and a bow tie)
  903. XB-)    "Let's do the beach, man!" [The Grey Wolf, greywolf@unisoft.com]
  904. XB-)    Batman
  905. XB-)    glasses
  906. XB-)    horn-rimmed glasses
  907. XB-)    horn-rims
  908. XB-)    sunglasses
  909. XB-)-[<    sunglasses and swimming trunk
  910. XB-D    "Serves you right, dummy!!"
  911. XB-|    cheap sunglasses
  912. XB:-)    sunglasses on head
  913. XB^)    hornrimmed glasses
  914. XC:#    football player
  915. XC:-)    large brain capacity
  916. XC=:-)    Galloping Gourmet
  917. XC=:-)    chef [ins_ajpo@jhunix.UUCP]
  918. XC=>8*)    devilish chef with glasses and a moustache [ins_ajpo@jhunix.UUCP]
  919. XC=}>;*{))    mega-smiley... a drunk, devilish chef with a toupee in an updraft, a mustache, and a double chin
  920. XC=}>;*{O)    mega-smiley... a drunk, devilish chef with a toupee in an updraft, a mustache, and a double chin
  921. XC|:-=    Charlie Chaplin
  922. XE-:-)    ham radio operator
  923. XE-:-I    net.ham-radio
  924. XEK(    Frankenstien
  925. XHonk!  oo---oo-Bo    semi-truck moving right [Michael Cook, mlc%gva.decnet@consrt.rockwell.com]
  926. XK:P    a little kid with a propeller beanie
  927. XL:-)    just graduated
  928. XM-)    sees no evil
  929. XM-),:X),:-M    sees no evil, hears no evil, speaks no evil
  930. XM:-)    saluting
  931. XO 8-)    the angelic halo look [Andrew Williams, awilliam@qucis.queensu.ca]
  932. XO :-)    an angel (at heart, at least)
  933. XO |-)    net.religion
  934. XO+    appropriate for women's messages, surely? [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  935. XO-&-<    doing nothing
  936. XO-(==<    chastised and/or chagrined, or is merely asleep.
  937. XO-)    Megaton Man, on patrol! [Matthew P. Wiener, weemba@brahms.BERKELEY.EDU]
  938. XO-)    cyclops
  939. XO-)    scuba diver
  940. XO-G-<    pointing to self
  941. XO-S-<    in a hurry
  942. XO-Z-<    in a big hurry
  943. XO:-)    acting very innocent (halo)
  944. XO:-)    with halo
  945. XO>-<|=    of interest to women
  946. XOO    headlights on msg
  947. XP-)    Colonel Klink (Hogan's Heroes)
  948. XP-)    getting fresh
  949. XQ:-)    new graduate
  950. XR-)    broken glasses
  951. XX-(    just died
  952. XX-(    net.suicide
  953. X[8-{)    bearded smiley with glasses and headphones [Dave Straker, daves@hpopd.pwd.hp.com]
  954. X[:-)    listening to walkman
  955. X[:-)    wearing a walkman
  956. X[:-]    square head
  957. X[:]    robot
  958. X[:|]    robot (or other AI project)
  959. X[=    for messages about housing in Arizona [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  960. X[]    hugs
  961. X\/\/\/\,8-O    really should fix frayed line cord on terminal
  962. X\:-)    french hat
  963. X\:^)    gumby smiley
  964. X\o/    PTL (praise the lord, or pass the loot?)
  965. X]:-)    The Devil
  966. X]:->    The Devil
  967. X^(^    happy variation
  968. X^)^  ^(^    two people talking
  969. X^L^    happy
  970. X^v^v^    mountains [Kenneth P. Brooks, <CSD.BROOKS at SU-SCORE>]
  971. X_:^)    American Indian
  972. X_\\//    Vulcan salute
  973. X__.    properly chastised and/or chagrined, or is merely asleep
  974. X__/~`-'~\_/    line of thought isn't quite a line
  975. X__Q~`__    cat
  976. X`:-)    shaved his right eyebrow off this morning
  977. Xd :-o    hats off to your great idea
  978. Xd.'v    (profile) wearing hard hat
  979. Xd8=    Your pet beaver is wearing goggles and a hard hat
  980. Xd:-)    baseball player
  981. Xg-)    wearing pince-nez glasses
  982. Xi-=<*** __.    CAUTION: has flame thrower and uses it!
  983. Xi-=<****** o-(==<    CAUTION: has flame thrower and uses it!
  984. Xi-=<***i    CAUTION: has flame thrower
  985. Xo-)    Cyclops
  986. Xo-<:-{{{    santa [rayan@utai.uucp]
  987. Xo/    raised hand
  988. Xo=    a burning candle (for flames)
  989. Xo>-<|=    of interest only to women
  990. Xo>8<|=    messages about interesting women
  991. XoF-oo---oo    semi-truck moving left [Michael Cook, mlc%gva.decnet@consrt.rockwell.com]
  992. Xoo    somebody's head-lights are on
  993. Xoo-    puzzled, confused
  994. Xouch... O>--<    dead driver/passenger on pavement [Michael Cook, mlc%gva.decnet@consrt.rockwell.com]
  995. Xpp#    cow
  996. Xpq`#'    bull
  997. Xq:-)    wearing baseball cap backwards
  998. X{    Alfred Hitchcock
  999. X{        :-)    Marge Simpson (Homer's wife) [Liron Lightwood, r.lightwood@trl.oz.au]
  1000. X{(:-)    wearing toupee
  1001. X{0-)    Cyclops
  1002. X{:-)    hair parted in the middle
  1003. X{:-)    new hair style
  1004. X{:-)    smiley with its hair parted in the middle
  1005. X{:-)    wearing a toupee
  1006. X{:-{)}    new hair style, mustache and beard
  1007. X{:\/    sounds like a duck
  1008. X{:^=(    Adolph Hitler
  1009. X{=    for messages about housing [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  1010. X{{-}}}    refugee from the '60's
  1011. X{}    'no comment'
  1012. X|    for bike fleet messages [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  1013. X|)    salamander
  1014. X|-(    asleep with nightmares [ins_ajpo@jhunix.UUCP]
  1015. X|-(    late at night
  1016. X|-)    Chinese
  1017. X|-)    Same as :-) but poster is Oriental [figmo@lll-crg.ARpA]
  1018. X|-)    asleep (boredom)
  1019. X|-)    hee hee
  1020. X|-<>    kissy face
  1021. X|-D    ho ho
  1022. X|-I    sleeping
  1023. X|-O    birth
  1024. X|-O    bored
  1025. X|-O    yawning/snoring
  1026. X|-P    reaction to unusually ugly C code [The Grey Wolf, greywolf@unisoft.com]
  1027. X|-P    yuk
  1028. X|-{    "Good Grief!"  (Charlie Brown?)
  1029. X|:-)    heavy eyebrows
  1030. X|:-O    (no explanation given)
  1031. X|:-|    excessively rigid
  1032. X|:['    Groucho Marx
  1033. X|I    asleep
  1034. X|^o    snoring
  1035. X||    for messages about cars or other four-wheeled vehicles [Richard Treitel, <CSL.VER.RJT at SU-SCORE>]
  1036. X||*(    handshake offered
  1037. X||*)    handshake accepted
  1038. X|~(    "Someone just busted my nose".
  1039. X}(:-(    wearing toupee in wind
  1040. X}:-(    bull headed
  1041. X}:-(    toupee in an updraft
  1042. X}:-)    hair parted in the middle in an updraft
  1043. X}:-)    wearing toupee in an updraft
  1044. X}:-<    cat
  1045. X}:^#})    mega-smiley: updrafted bushy-mustached pointy nosed smiley with a double-chin
  1046. X}:~#})    mega-smiley: updrafted bushy-mustached pointy nosed smiley with a double-chin
  1047. X}}\/=oo---oo  Crash!    semi-truck after collision [Michael Cook, mlc%gva.decnet@consrt.rockwell.com]
  1048. X~ :-(    particularly angry
  1049. X~'v    (profile) has long bangs
  1050. X~:-(    net.flame
  1051. X~=    a candle, to annotate flaming messages
  1052. X~==    flame follows (picture of a lit match or candle) [figmo@lll-crg.ARpA]
  1053. X~M`'~    camel
  1054. X~~:-(    net.flame
  1055. X~~\8-O    needs to fix frayed cord on terminal
  1056. X~~~\8-O    zapped by frayed cord on terminal
  1057. X~~~c___    beach [Kenneth P. Brooks, <CSD.BROOKS at SU-SCORE>]
  1058. X~~~~8}    snake
  1059. X~~~~~8}    snake
  1060. END_OF_FILE
  1061. if test 23975 -ne `wc -c <'faces.in'`; then
  1062.     echo shar: \"'faces.in'\" unpacked with wrong size!
  1063. fi
  1064. # end of 'faces.in'
  1065. fi
  1066. if test -f 'smiley.1' -a "${1}" != "-c" ; then 
  1067.   echo shar: Will not clobber existing file \"'smiley.1'\"
  1068. else
  1069. echo shar: Extracting \"'smiley.1'\" \(2302 characters\)
  1070. sed "s/^X//" >'smiley.1' <<'END_OF_FILE'
  1071. X.\"-------
  1072. X.\" s m i l e y . 1
  1073. X.\"
  1074. X.\" DaviD W. Sanderson
  1075. X.\"-------
  1076. X.hy 0
  1077. X.TH SMILEY 1 "April 1, 1991"
  1078. X.SH NAME
  1079. Xsmiley \- print or explain smileys
  1080. X.SH SYNOPSIS
  1081. X.B smiley
  1082. X.RB [ \-V ]
  1083. X.RB [ \-e ]
  1084. X.RB [ \-l ]
  1085. X.RB [ \-f ]
  1086. X.RI [ smiley... ]
  1087. X.br
  1088. X.SH DESCRIPTION
  1089. X.I Smiley
  1090. Xis a program for smiley junkies
  1091. Xwho like to have all the smileys at their fingertips.
  1092. X.PP
  1093. XThe options have the following meaning:
  1094. X.TP 
  1095. X.B \-V
  1096. XPrint the version of the program
  1097. Xand the number of faces and definitions.
  1098. X.TP 
  1099. X.B \-e
  1100. XExplain the face found in the environment variable
  1101. X.BR SMILEY .
  1102. X.TP
  1103. X.B \-l
  1104. XPrint a listing of all the known smileys, with explanations.
  1105. X.TP
  1106. X.B \-f
  1107. XPrint a random smiley, face only.
  1108. X.TP
  1109. X.I smiley
  1110. XExplain the given smiley.
  1111. X.PP
  1112. XWhen invoked with no arguments,
  1113. X.I smiley
  1114. Xprints a random smiley with an explanation.
  1115. X.SH EXAMPLE
  1116. XHere are some
  1117. X.IR ksh (1)
  1118. Xfunctions that put a smiley into your prompt.
  1119. X.TP
  1120. X.BR ps1sed (\|)
  1121. XTransform the standard input so that it will display properly
  1122. Xwhen it is made part of
  1123. X.B PS1
  1124. Xin
  1125. X.IR ksh .
  1126. X(That is, quote \0!\0$\0\e\0 if they appear.)
  1127. XThese are the transformations:
  1128. X.sp
  1129. X.\"    !    \(->    \e\|!\|\e\|!
  1130. X    !    \(->    !\|!
  1131. X.br
  1132. X    $    \(->    \e\|$
  1133. X.br
  1134. X    \e    \(->    \e\|\e
  1135. X.br
  1136. X.IP
  1137. XNote that a \0!\0
  1138. Xmust be doubled instead of quoted with \0\e\0
  1139. Xin order to display.
  1140. X.RS
  1141. X.nf
  1142. X.ta .5i +\w'sed \''u
  1143. X.sp
  1144. X.ne 5
  1145. Xps1sed\|(\|)
  1146. X{
  1147. X.\"    sed 's/!/&&/g
  1148. X.\"#        s/\\/&&/g
  1149. X.\"#        s/[!$]/\\&/g'
  1150. X.\"        s/[!$\\]/\\&/g'
  1151. X.\"
  1152. X.\"    sed \'s/\^!/&&/g
  1153. X.\"        s/[!$\|\e\|\e\|]/\|\e\|\e\|&/g\'
  1154. X.\"
  1155. X    sed \'s/\^!/&&/g
  1156. X        s/[$\|\e\|\e\|]/\|\e\|\e\|&/g\'
  1157. X}
  1158. X.sp
  1159. X.DT
  1160. X.fi
  1161. X.RE
  1162. X.TP
  1163. X.BR ps1 (\|)
  1164. XPut a new smiley into
  1165. X.BR PS1 .
  1166. XUse
  1167. X.I ps1sed
  1168. Xto make sure
  1169. Xany characters in the smiley
  1170. Xthat are special to the shell
  1171. Xare quoted appropriately.
  1172. X.RS
  1173. X.nf
  1174. X.sp
  1175. X.ne 5
  1176. Xps1\|(\|)
  1177. X{
  1178. X.\"    export SMILEY="`smiley -f`"
  1179. X.\"    PS1=`print -r - "$SMILEY" | ps1sed`" "
  1180. X    export SMILEY="`smiley \-f\|`"
  1181. X    PS1=`print \-r \- "$SMILEY" | ps1sed\|`" "
  1182. X}
  1183. X.fi
  1184. X.RE
  1185. X.SH CAVEATS
  1186. XThe list of smileys is the personal collection of the author,
  1187. Xso there are bound to be some missing.
  1188. X.PP
  1189. XMultiline smileys and the ``invisible smiley'' are absent from
  1190. X.I smiley
  1191. Xbecause the author does not want a multiline or invisible prompt.
  1192. X.SH AUTHOR
  1193. XDaviD W. Sanderson    (dws\|@cs.wisc.edu)
  1194. X.SH COPYRIGHT
  1195. X\&
  1196. X.br
  1197. X.if n (C)
  1198. X.if t \s+8\v'+2p'\fB\(co\fR\v'-2p'\s0
  1199. X\s+2Copyright 1991 by DaviD W. Sanderson\s0
  1200. END_OF_FILE
  1201. if test 2302 -ne `wc -c <'smiley.1'`; then
  1202.     echo shar: \"'smiley.1'\" unpacked with wrong size!
  1203. fi
  1204. # end of 'smiley.1'
  1205. fi
  1206. if test -f 'other.uu' -a "${1}" != "-c" ; then 
  1207.   echo shar: Will not clobber existing file \"'other.uu'\"
  1208. else
  1209. echo shar: Extracting \"'other.uu'\" \(3730 characters\)
  1210. sed "s/^X//" >'other.uu' <<'END_OF_FILE'
  1211. Xbegin 600 other
  1212. XM(RTM+2TM+2T*(R!4:&5S92!A<F4@<VUI;&5Y<R!T:&%T($D@9&\@;F]T(&-O
  1213. XM;G-I9&5R('-U:71A8FQE(&9O<B!U<V4@87,@82!P<F]M<'0N"B,@16ET:&5R
  1214. XM('1H97D@9&]N)W0@<VAO=R!U<"!O<B!A<F4@;75L=&EL:6YE('!I8W1U<F5S
  1215. XM("T@<W1R971C:&EN9PHC('1H92!B;W5N9&%R:65S(&]F('-M:6QE>7,N"B,*
  1216. XM(R!$879I1"!7+B!386YD97)S;VX*(RTM+2TM+2T*"@D)"7-M:6QE>2!I;G9I
  1217. XM<VEB;&4@;6%N"@H\7%P)"0EC870*.B`J/@H\+R\*"B,C(PD)"4)O;B!*;W9I
  1218. XM"B,Z+2D*(R,C"@HC"0D)160@2V]C:`HZ+2D*(PH*(R,C"0D)0F]Z;R!T:&4@
  1219. XM0VQO=VX*.F\I"B,C(PH*("!?7U\*("\@("!<"GP@4DE0('P*?%]?7U]??`D)
  1220. XM"7)E8V5N=&QY(&1E8V5A<V5D"@H]/3T]3PI<.BTH"0D)4V-O='1I<V@@2&EG
  1221. XM:&QA;F0@0F%G<&EP97(A(%MB:6QL0'-I9VUA+G5U8W!="@H@+PHX(%T@("`@
  1222. XM(`D)4&EN;V-C:&EO(%MJ96%N971T94!R86YD=F%X+E550U`@*$IE86YE='1E
  1223. XM($AA<FET86XI70H*?2X)"0EE;&5P:&%N=`H@8%P*"D,I.BU/"0D)8F%R8F5R
  1224. XM<VAO<"!Q=6%R=&5T"D,I.BU/"D,I.BU/"D,I.BU/"@HN("X)"0EL>6EN9R!D
  1225. XM;W=N"B!\"@I?7U]?7PD)"6-O;7!U=&5R"GQ/+4]\"GPZ.CI\"@H*/7P[*"DJ
  1226. XM*BH\/3T]/3U\"0D\+2TM;&%U9VAI;F<@;6]N;V-L960@;6%N(&EN('1U>"!A
  1227. XM;F0@8W5M;65R8G5N9`H)"0ES:61E=V%Y<R`M+2!T:&ES(&ES('1H92!B87-I
  1228. XM8R!F:6=U<F4*"CU].R@I*BHJ*CP]/3T]/7P);&%U9VAI;F<@;6]N;V-L960@
  1229. XM;6%N(&EN('1U>"!A;F0@8W5M;65R8G5N9"P*("`@("!&"0D):&]L9&EN9R!A
  1230. XM(&=U;@H*/7T[*"DJ*BHJ/#T]/3U\"0EL875G:&EN9R!M;VYO8VQE9"!M86X@
  1231. XM:6X@='5X(&%N9"!C=6UM97)B=6YD+`H@("`@/5T)"0EC87)R>6EN9R!B961T
  1232. XM<F%Y('<O(&=L87-S(&]F(&UI;&L*"CU].R@I*BHJ*CQ>/3T]?`D);&%U9VEN
  1233. XM9R!M;VYO8VQE9"!M86X@:6X@='5X(&%N9"!C=6UM97)B=6YD+`H)"0EW+R!E
  1234. XM<F5C=&EO;@H*/7T[*"DJ*BHJ/#T]/3U\"0EL875G:&EN9R!M;VYO8VQE9"!M
  1235. XM86X@:6X@='5X(&%N9"!C=6UM97)B=6YD+`H@("`@("!0"0D)8V%R<GEI;F<@
  1236. XM:VQA>&]N(&]R('!O<W1H;W)N"@H@("`@("`@+U\*("`@("`O"CU]."@I*BHJ
  1237. XM*CP]/3T]/7P);&%U9VAI;F<@;6]N;V-L960@;6%N(&EN('1U>"!A;F0@8W5M
  1238. XM;65R8G5N9"P*("`@("!<("!?"0EA;F0@;W!E<F$@8V%P92!A;F0@;6%S:PH@
  1239. XM("`@("`@7`H*/7T[*"DJ*BHJ/#T]/3T]?`EL875G:&EN9R!M;VYO8VQE9"!M
  1240. XM86X@:6X@='5X(&%N9"!C=6UM97)B=6YD+`H@("`@;S`)"0EC87)R>6EN9R!A
  1241. XM(&QA<F=E('!U9F9I;@H@("`@=@H*/7T[*"DJ*BHJ/#T]/3T]?`EL875G:&EN
  1242. XM9R!M;VYO8VQE9"!M86X@:6X@='5X(&%N9"!C=6UM97)B=6YD+`H@("`@/"E?
  1243. XM7U\I/2!O;V]O"6%N9"!*971S;VX@:F5T+7!A8VL*"CU].R@I*BHJ*CP]/3T]
  1244. XM/7P);&%U9VAI;F<@;6]N;V-L960@;6%N(&EN('1U>"!A;F0@8W5M;65R8G5N
  1245. XM9"P*("`@("`@+2T@+2`M($\)"61R;W!P:6YG(&$@8F]W;&EN9R!B86QL(&]R
  1246. XM('!U;7!K:6X*"CU].R@I*BHJ*CP]/3T]/7P);&%U9VAI;F<@;6]N;V-L960@
  1247. XM;6%N(&EN('1U>"!A;F0@8W5M;65R8G5N9"P*("`@("`@("`@("`@("`];PEA
  1248. XM;F0@<&5T(')A8F)I="P@;F]T:6-E86)L>2!F871I9W5E9`H)("`@("`@($<*
  1249. XM"B`@=@H@('P*/7T[*"DJ*BHJ/#T]/3T]?`EL875G:&EN9R!M;VYO8VQE9"!M
  1250. XM86X@:6X@='5X(&%N9"!C=6UM97)B=6YD+`H@('P)"0EA;F0@=6YU<W5A;&QY
  1251. XM(&QO;F<@4W1E=F4@36%R=&EN"B`@5@D)"6%R<F]W+71H<F]U9V@M:&5A9"!T
  1252. XM<FEC:PH*5&AE<V4@87)E(&%N:6UA=&5D('-M:6QE>7,L(&EN=&5N9&5D(&9O
  1253. XM<B!V:65W:6YG(&]N(&QO=RUS<&5E9"!T97)M:6YA;',N"@I&<F]M.B!#:'5C
  1254. XM:R!';W1L:65B(#Q)0TPN1T]43$E%0B!A="!352U30T]213X*"F9O<B!C=71E
  1255. XM(&1E;G1A;"!A<W-I<W1A;G1S+V1E;G1I<W1S(&UE<W-A9V5S.@H*("`@("`Z
  1256. XM+7P-("`@("`Z+7P-("`@("`Z+7P-("`@("`Z+7P-("`@("`Z+7P-("`@("`Z
  1257. XM+7P-("`@("`Z+7P-("`@("`Z+7P-("`@("`Z+7P-("`@("`Z+7P-("`@("`Z
  1258. XM+7P-("`@("`X+7P-("`@("`Z+7P-("`@("`X+7P-("`@("`Z+7P-("`@("`X
  1259. XM+7P-("`@("`Z+7P-("`@("`X+7P-("`@("`Z+7P-("`@("`X+7P-("`@("`Z
  1260. XM+7P-("`@("`X+7P-("`@("`Z+7P-("`@("`X+7P-("`@("`Z+7P-("`@("`X
  1261. XM+7P-("`@("`Z+7P-("`@("`X+7P-("`@("`Z+7P-("`@("`X+7P-("`@("`Z
  1262. XM+7P-("`@("`X+7P-("`@("`Z+7P-("`@("`X+7P-("`@("`Z+5`*"D9R;VTZ
  1263. XM($1A=FED($4N(%-M:71H(#Q#4T0N4TU)5$@@870@4U4M4T-/4D4^"@IW86=G
  1264. XM:6YG('1O;F=U93H*"B`@/#HM4`T@(#PZ+5`-("`\.BU0#2`@/#HM8@T@(#PZ
  1265. XM+6(-("`\.BUB#2`@/#HM4`T@(#PZ+5`-("`\.BU0#2`@/#HM8@T@(#PZ+6(-
  1266. XM("`\.BUB#2`@/#HM4`T@(#PZ+5`-("`\.BU0#2`@/#HM8@T@(#PZ+6(-("`\
  1267. XM.BUB#2`@/#HM4`T@(#PZ+5`-("`\.BU0#2`@/#HM8@T@(#PZ+6(-("`\.BUB
  1268. XM#2`@/#HM4`T@(#PZ+5`-("`\.BU0#2`@/#HM8@T@(#PZ+6(-("`\.BUB#2`@
  1269. XM/#HM4`T@(#PZ+5`-("`\.BU0#2`@/#HM8@T@(#PZ+6(-("`\.BUB#2`@/#HM
  1270. XM4`T@(#PZ+5`-("`\.BU0#2`@/#HM8@T@(#PZ+6(-("`\.BUB#2`@/#HM4`T@
  1271. XB(#PZ+5`-("`\.BU0#2`@/#HM8@T@(#PZ+6(-("`\.BUB"BUB
  1272. X`
  1273. Xend
  1274. END_OF_FILE
  1275. if test 3730 -ne `wc -c <'other.uu'`; then
  1276.     echo shar: \"'other.uu'\" unpacked with wrong size!
  1277. fi
  1278. # end of 'other.uu'
  1279. fi
  1280. if test -f 'bsearch.c' -a "${1}" != "-c" ; then 
  1281.   echo shar: Will not clobber existing file \"'bsearch.c'\"
  1282. else
  1283. echo shar: Extracting \"'bsearch.c'\" \(897 characters\)
  1284. sed "s/^X//" >'bsearch.c' <<'END_OF_FILE'
  1285. X/*
  1286. X * A binary search generalized from Knuth (6.2.1) Algorithm B just
  1287. X * like the AT&T man page says...
  1288. X *
  1289. X * Written by reading the System V Interface Definition, not the code.
  1290. X *
  1291. X * Totally public domain.
  1292. X */
  1293. X/*LINTLIBRARY*/
  1294. X
  1295. Xchar *bsearch(key, base, nel, width, compar)
  1296. Xchar    *key;            /* Key to be located */
  1297. Xchar    *base;            /* Beginning of table */
  1298. Xunsigned nel;            /* Number of elements in the table */
  1299. Xunsigned width;            /* Width of an element (bytes) */
  1300. Xint    (*compar)();        /* Comparison function */
  1301. X{
  1302. X    int doublewidth = width + width;
  1303. X
  1304. X    char *last = base + width * (nel - 1);
  1305. X
  1306. X    while (last >= base)
  1307. X    {
  1308. X    register char *p = base + width * ((last - base)/doublewidth);
  1309. X    register int cmp = (*compar)(key, p);
  1310. X
  1311. X    if (cmp == 0)
  1312. X        return (p);            /* aha, we found it! */
  1313. X    if (cmp < 0)
  1314. X        last = p - width;
  1315. X    else
  1316. X        base = p + width;
  1317. X    }
  1318. X    return ((char *) 0);        /* didn't find it */
  1319. X}
  1320. END_OF_FILE
  1321. if test 897 -ne `wc -c <'bsearch.c'`; then
  1322.     echo shar: \"'bsearch.c'\" unpacked with wrong size!
  1323. fi
  1324. # end of 'bsearch.c'
  1325. fi
  1326. if test -f 'getopt.c' -a "${1}" != "-c" ; then 
  1327.   echo shar: Will not clobber existing file \"'getopt.c'\"
  1328. else
  1329. echo shar: Extracting \"'getopt.c'\" \(1883 characters\)
  1330. sed "s/^X//" >'getopt.c' <<'END_OF_FILE'
  1331. X#define ERR(s, c)       if(opterr){\
  1332. X        extern int strlen(), write();\
  1333. X        char errbuf[2];\
  1334. X        errbuf[0] = c; errbuf[1] = '\n';\
  1335. X        (void) write(2, argv[0], (unsigned)strlen(argv[0]));\
  1336. X        (void) write(2, s, (unsigned)strlen(s));\
  1337. X        (void) write(2, errbuf, 2);}
  1338. X
  1339. Xextern int strcmp();
  1340. Xextern char *strchr();
  1341. X
  1342. Xint     opterr = 1;
  1343. Xint     optind = 1;
  1344. Xint     optopt;
  1345. Xchar    *optarg;
  1346. Xint
  1347. Xgetopt(argc, argv, opts)
  1348. Xint     argc;
  1349. Xchar    **argv, *opts;
  1350. X{
  1351. X        static int sp = 1;
  1352. X        register int c;
  1353. X        register char *cp;
  1354. X
  1355. X    if(optind == 0)    /* DWS: reset getopt() for reuse */
  1356. X    {
  1357. X        optind = 1;
  1358. X        sp = 1;
  1359. X    }
  1360. X        if(sp == 1)
  1361. X                if(optind >= argc ||
  1362. X                   argv[optind][0] != '-' || argv[optind][1] == '\0')
  1363. X                        return(-1);
  1364. X                else if(strcmp(argv[optind], "--") == 0) {
  1365. X                        optind++;
  1366. X                        return(-1);
  1367. X                }
  1368. X        optopt = c = argv[optind][sp];
  1369. X        if(c == ':' || (cp=strchr(opts, c)) == 0) {
  1370. X                ERR(": illegal option -- ", c);
  1371. X                if(argv[optind][++sp] == '\0') {
  1372. X                        optind++;
  1373. X                        sp = 1;
  1374. X                }
  1375. X                return('?');
  1376. X        }
  1377. X        if(*++cp == ':') {
  1378. X                if(argv[optind][sp+1] != '\0')
  1379. X                        optarg = &argv[optind++][sp+1];
  1380. X                else if(++optind >= argc) {
  1381. X                        ERR(": option requires an argument -- ", c);
  1382. X                        sp = 1;
  1383. X                        return('?');
  1384. X                } else
  1385. X                        optarg = argv[optind++];
  1386. X                sp = 1;
  1387. X        } else {
  1388. X                if(argv[optind][++sp] == '\0') {
  1389. X                        sp = 1;
  1390. X                        optind++;
  1391. X                }
  1392. X                optarg = 0;
  1393. X        }
  1394. X        return(c);
  1395. X}
  1396. END_OF_FILE
  1397. if test 1883 -ne `wc -c <'getopt.c'`; then
  1398.     echo shar: \"'getopt.c'\" unpacked with wrong size!
  1399. fi
  1400. # end of 'getopt.c'
  1401. fi
  1402. if test -f 'ltoa.c' -a "${1}" != "-c" ; then 
  1403.   echo shar: Will not clobber existing file \"'ltoa.c'\"
  1404. else
  1405. echo shar: Extracting \"'ltoa.c'\" \(2397 characters\)
  1406. sed "s/^X//" >'ltoa.c' <<'END_OF_FILE'
  1407. X/*
  1408. X * ltoa(num, base) - return string form of the given number in the
  1409. X * given base.
  1410. X * 
  1411. X * If the base has magnitude greater than 10, the sign of the base
  1412. X * determines which case of letters will be used to represent digits
  1413. X * larger than 9.  A positive base will use upper-case letters, while
  1414. X * a negative base will use lower-case letters.
  1415. X * 
  1416. X * If the base has magnitude 10, the sign of the base determines whether
  1417. X * the number is to be considered signed or unsigned.  A base of +10
  1418. X * is considered to be signed, while a base of -10 is considered to
  1419. X * be unsigned.  Odd, huh?
  1420. X * 
  1421. X * Only base 10 is potentially signed; all other bases are unsigned.
  1422. X * 
  1423. X * For performance reasons there is no check for an invalid base (a base
  1424. X * of magnitude less than 1 or greater than 36).
  1425. X * 
  1426. X * The return value is a pointer to a static buffer that is overwritten
  1427. X * with every call.
  1428. X *
  1429. X * DaviD W. Sanderson
  1430. X */
  1431. X
  1432. Xchar           *
  1433. Xltoa(num, obase)
  1434. X    unsigned long   num;
  1435. X    int             obase;
  1436. X{
  1437. X    unsigned long   base;
  1438. X    int             neg = 0;/* 1 if num is negative */
  1439. X    char            a = 'A';
  1440. X
  1441. X    /*
  1442. X     * buf[] is big enough for the longest binary string together
  1443. X     * with terminal NUL and possible minus sign.
  1444. X     * 
  1445. X     * Note that there does not need to be a separate byte allocated
  1446. X     * for the minus sign. The minus sign is present only for
  1447. X     * numbers to be represented in decimal. Since the base 10
  1448. X     * representation of numbers larger than 1 is shorter than
  1449. X     * the base 2 representation, there will always be room for
  1450. X     * the minus sign in the base 10 string.
  1451. X     */
  1452. X    static char     buf[sizeof(unsigned long) * 8 + 1];
  1453. X
  1454. X    /* p points to the last char in buf */
  1455. X    char           *p = buf + (sizeof buf - 1);
  1456. X
  1457. X    *p = '\0';        /* terminate the string */
  1458. X
  1459. X    /*
  1460. X     * The only signed-ness occurs when obase == +10.
  1461. X     * 
  1462. X     * If obase == -10, the decimal number is unsigned.
  1463. X     */
  1464. X    if (obase == 10 && (long) num < 0)
  1465. X    {
  1466. X        neg = 1;
  1467. X        num = -(long) num;
  1468. X    }
  1469. X
  1470. X    if (obase < 0)
  1471. X    {
  1472. X        a = 'a';
  1473. X        obase = -obase;
  1474. X    }
  1475. X
  1476. X    /*
  1477. X     * now that obase is nonnegative, assign it to base
  1478. X     */
  1479. X    base = (unsigned long) obase;
  1480. X
  1481. X    /*
  1482. X     * subtract 10 from the code for the letter 'a' since rem
  1483. X     * will be 10 more than the offset from a
  1484. X     */
  1485. X    a -= 10;
  1486. X
  1487. X    do
  1488. X    {
  1489. X        long            rem;
  1490. X
  1491. X        rem = num % base;    /* obtain value of digit */
  1492. X
  1493. X        *--p = ((rem < 10) ? '0' : a) + rem;
  1494. X    }
  1495. X    while ((num /= base) != 0);
  1496. X
  1497. X    if (neg)
  1498. X        *--p = '-';
  1499. X
  1500. X    return p;
  1501. X}
  1502. END_OF_FILE
  1503. if test 2397 -ne `wc -c <'ltoa.c'`; then
  1504.     echo shar: \"'ltoa.c'\" unpacked with wrong size!
  1505. fi
  1506. # end of 'ltoa.c'
  1507. fi
  1508. if test -f 'smiley.c' -a "${1}" != "-c" ; then 
  1509.   echo shar: Will not clobber existing file \"'smiley.c'\"
  1510. else
  1511. echo shar: Extracting \"'smiley.c'\" \(5903 characters\)
  1512. sed "s/^X//" >'smiley.c' <<'END_OF_FILE'
  1513. X/*
  1514. X * s m i l e y . c
  1515. X * 
  1516. X * DaviD W. Sanderson is to blame for this.
  1517. X */
  1518. X
  1519. X#include "smiley.h"
  1520. X#include "patchlevel.h"
  1521. X
  1522. X/*
  1523. X * macros
  1524. X */
  1525. X
  1526. X/*
  1527. X * swrite() - write() a "string variable" (char *)
  1528. X */
  1529. X
  1530. X#define    swrite(fd, s)    (void) write((fd), (s), strlen(s))
  1531. X
  1532. X/*
  1533. X * lwrite() - write() a "string literal" (char [])
  1534. X */
  1535. X
  1536. X#define    lwrite(fd, lit)    (void) write((fd), (lit), sizeof(lit)-1)
  1537. X
  1538. X/*
  1539. X * PUTFACE() - write() a smiley and its description
  1540. X */
  1541. X
  1542. X#define    PUTFACE(fd, i)    swrite((fd), faces[i].face);    \
  1543. X            lwrite((fd), tab);        \
  1544. X            swrite((fd), faces[i].desc);    \
  1545. X            lwrite((fd), newline)
  1546. X
  1547. X/*
  1548. X * FD - file descriptor to which to write the output
  1549. X */
  1550. X
  1551. X#define FD    1
  1552. X
  1553. X/*
  1554. X * declarations
  1555. X */
  1556. X
  1557. Xextern int      write();
  1558. Xextern int      strlen();
  1559. Xextern char    *bsearch();
  1560. X
  1561. X/*
  1562. X * definitions
  1563. X */
  1564. X
  1565. Xstatic char     ENVAR[] = "SMILEY";
  1566. Xstatic char     tab[] = "\t";
  1567. Xstatic char     newline[] = "\n";
  1568. X
  1569. X/*
  1570. X * facecmp() - comparison routine for using bsearch()
  1571. X */
  1572. Xint
  1573. Xfacecmp(f1, f2)
  1574. X    struct smiley  *f1;
  1575. X    struct smiley  *f2;
  1576. X{
  1577. X    return strcmp(f1->face, f2->face);
  1578. X}
  1579. X
  1580. X/*
  1581. X * fsearch() - return index of face, or -1 on failure
  1582. X * 
  1583. X * Note that this assumes that there will be at most one entry in
  1584. X * faces[] for a particular smiley.  It also assumes that faces[] is
  1585. X * sorted in ascending order.
  1586. X */
  1587. Xint
  1588. Xfsearch(s)
  1589. X    char           *s;
  1590. X{
  1591. X    struct smiley   f;
  1592. X    struct smiley  *ans;
  1593. X
  1594. X    f.face = s;
  1595. X    ans = (struct smiley *) bsearch(
  1596. X        (char *) &f,
  1597. X        (char *) faces, (unsigned) nfaces, sizeof faces[0],
  1598. X        facecmp);
  1599. X
  1600. X    if (ans)
  1601. X        return ans - faces;
  1602. X    else
  1603. X        return -1;
  1604. X}
  1605. X
  1606. X/*
  1607. X * explain() - look through the list of smileys for the given face.
  1608. X * 
  1609. X * If it is found, then print out the description.
  1610. X * 
  1611. X * The return value is zero if the face is not found, nonzero otherwise.
  1612. X */
  1613. Xstatic int
  1614. Xexplain(s)
  1615. X    char           *s;
  1616. X{
  1617. X    int             i;
  1618. X
  1619. X    if((i = fsearch(s)) == -1)
  1620. X        return 0;
  1621. X
  1622. X    PUTFACE(FD, i);
  1623. X    return 1;
  1624. X#if 0
  1625. X    int        found = 0;
  1626. X
  1627. X    for (i = 0; i < nfaces; i++)
  1628. X    {
  1629. X        extern int      strcmp();
  1630. X
  1631. X        if (strcmp(s, faces[i].face) == 0)
  1632. X        {
  1633. X            found = 1;
  1634. X            PUTFACE(FD, i);
  1635. X        }
  1636. X    }
  1637. X    return found;
  1638. X#endif
  1639. X}
  1640. X
  1641. X/*
  1642. X * main() - main program
  1643. X */
  1644. X
  1645. Xmain(ac, av)
  1646. X    int             ac;
  1647. X    char          **av;
  1648. X{
  1649. X    extern char    *optarg;
  1650. X    extern int      optind;
  1651. X    extern int      opterr;
  1652. X
  1653. X    char           *args = "Velf";
  1654. X    int             Vflag = 0;
  1655. X    int             eflag = 0;
  1656. X    int             lflag = 0;
  1657. X    int             fflag = 0;
  1658. X    int             errflag = 0;
  1659. X    int             c;
  1660. X
  1661. X    /*
  1662. X     * process command-line options
  1663. X     */
  1664. X    while ((c = getopt(ac, av, args)) != -1)
  1665. X    {
  1666. X        switch (c)
  1667. X        {
  1668. X        case 'V':    /* version */
  1669. X            Vflag = 1;
  1670. X            break;
  1671. X        case 'e':    /* environment */
  1672. X            eflag = 1;
  1673. X            break;
  1674. X        case 'l':    /* list */
  1675. X            lflag = 1;
  1676. X            break;
  1677. X        case 'f':    /* face only */
  1678. X            fflag = 1;
  1679. X            break;
  1680. X        case '?':
  1681. X            errflag = 1;
  1682. X            break;
  1683. X        }
  1684. X    }
  1685. X    if (errflag)
  1686. X    {
  1687. X        static char     msg0[] = "usage: ";
  1688. X        static char    *msg1[] =
  1689. X        {
  1690. X            " [-V] [-e] [-l] [-f] [smiley ...]\n",
  1691. X            "where:\t-V\tprint program version\n",
  1692. X            "\t-e\texplain the face in $",
  1693. X            (char *) 0
  1694. X        };
  1695. X        static char    *msg2[] =
  1696. X        {
  1697. X            "\n",
  1698. X            "\t-l\tlist all the smileys\n",
  1699. X            "\t-f\tprint a random smiley, face only\n",
  1700. X            "\tsmiley\texplain the given smileys\n",
  1701. X            "(no args)\tprint a random smiley\n",
  1702. X            (char *) 0
  1703. X        };
  1704. X
  1705. X        char           **p;
  1706. X
  1707. X        lwrite(FD, msg0);
  1708. X        swrite(FD, av[0]);
  1709. X
  1710. X        for (p = msg1; *p; p++)
  1711. X            swrite(FD, *p);
  1712. X
  1713. X        lwrite(FD, ENVAR);
  1714. X
  1715. X        for (p = msg2; *p; p++)
  1716. X            swrite(FD, *p);
  1717. X
  1718. X        return 1;
  1719. X    }
  1720. X
  1721. X    /*
  1722. X     * perform command-line options
  1723. X     */
  1724. X
  1725. X    /*
  1726. X     * Vflag - print version information
  1727. X     */
  1728. X    if (Vflag)
  1729. X    {
  1730. X        static char     stat0[] = " faces, ";
  1731. X        static char     stat1[] = " definitions\n";
  1732. X        char *num;
  1733. X        int i;
  1734. X        unsigned long ndefs;
  1735. X        extern char *ltoa();
  1736. X
  1737. X        swrite(FD, av[0]);
  1738. X        lwrite(FD, version);
  1739. X
  1740. X        /*
  1741. X         * Print counts of the smiley faces and definitions
  1742. X         * The definitions for a smiley are separated by
  1743. X         * newlines, but not terminated by newlines.
  1744. X         */
  1745. X        num = ltoa((unsigned long)nfaces, 10);
  1746. X        swrite(FD, num);
  1747. X        lwrite(FD, stat0);
  1748. X
  1749. X        ndefs = nfaces;
  1750. X        for (i=0; i<nfaces; i++)
  1751. X        {
  1752. X            char *def;
  1753. X
  1754. X            for (def = faces[i].desc; *def; def++)
  1755. X            {
  1756. X                if (*def == '\n')
  1757. X                    ndefs++;
  1758. X            }
  1759. X        }
  1760. X        num = ltoa(ndefs, 10);
  1761. X        swrite(FD, num);
  1762. X        lwrite(FD, stat1);
  1763. X
  1764. X#ifdef __DATE__
  1765. X#ifdef __TIME__
  1766. X        {
  1767. X            static char     when0[] = "last compiled ";
  1768. X            static char     when1[] = __TIME__;
  1769. X            static char     when2[] = " ";
  1770. X            static char     when3[] = __DATE__;
  1771. X            static char     when4[] = "\n";
  1772. X
  1773. X            lwrite(FD, when0);
  1774. X            lwrite(FD, when1);
  1775. X            lwrite(FD, when2);
  1776. X            lwrite(FD, when3);
  1777. X            lwrite(FD, when4);
  1778. X        }
  1779. X#endif
  1780. X#endif
  1781. X
  1782. X        return 0;
  1783. X    }
  1784. X
  1785. X    /*
  1786. X     * eflag - explain $SMILEY
  1787. X     */
  1788. X    if (eflag)
  1789. X    {
  1790. X        extern char    *getenv();
  1791. X        int            unknown = 1;
  1792. X        char           *str;
  1793. X
  1794. X        if ((str = getenv(ENVAR)) != (char *)0)
  1795. X        {
  1796. X            if(explain(str) != 0)
  1797. X                unknown = 0;
  1798. X        }
  1799. X        else
  1800. X        {
  1801. X            static char     notset[] = " not set\n";
  1802. X
  1803. X            lwrite(FD, ENVAR);
  1804. X            lwrite(FD, notset);
  1805. X        }
  1806. X        return unknown;
  1807. X    }
  1808. X
  1809. X    /*
  1810. X     * lflag - list smileys
  1811. X     */
  1812. X    if (lflag)
  1813. X    {
  1814. X        int             i;
  1815. X
  1816. X        for (i = 0; i < nfaces; i++)
  1817. X        {
  1818. X            PUTFACE(FD, i);
  1819. X        }
  1820. X        return 0;
  1821. X    }
  1822. X
  1823. X    /*
  1824. X     * literal smileys - try to explain them
  1825. X     *
  1826. X     * In this case the exit status is the number of smileys
  1827. X     * that were not found.
  1828. X     */
  1829. X    if (optind < ac)
  1830. X    {
  1831. X        int    unknown = 0;
  1832. X
  1833. X        for (; optind < ac; optind++)
  1834. X        {
  1835. X            if(!explain(av[optind]))
  1836. X                unknown++;
  1837. X        }
  1838. X
  1839. X        return unknown;
  1840. X    }
  1841. X
  1842. X    /*
  1843. X     * otherwise - generate a random smiley
  1844. X     */
  1845. X    {
  1846. X        extern int      rand();
  1847. X        extern void     srand();
  1848. X        extern long     time();
  1849. X        extern int      getpid();
  1850. X
  1851. X        char           *f;
  1852. X
  1853. X        /*
  1854. X         * seed with the current time + the pid. (The pid
  1855. X         * prevents smileys started at identical times from
  1856. X         * getting the same random seed)
  1857. X         */
  1858. X        srand((unsigned) time((long *)0) + (unsigned) getpid());
  1859. X        f = faces[rand() % nfaces].face;
  1860. X
  1861. X        if (fflag)
  1862. X        {
  1863. X            swrite(FD, f);
  1864. X            lwrite(FD, newline);
  1865. X        }
  1866. X        else
  1867. X        {
  1868. X            (void) explain(f);
  1869. X        }
  1870. X    }
  1871. X    return 0;
  1872. X}
  1873. END_OF_FILE
  1874. if test 5903 -ne `wc -c <'smiley.c'`; then
  1875.     echo shar: \"'smiley.c'\" unpacked with wrong size!
  1876. fi
  1877. # end of 'smiley.c'
  1878. fi
  1879. if test -f 'mkfaces.c' -a "${1}" != "-c" ; then 
  1880.   echo shar: Will not clobber existing file \"'mkfaces.c'\"
  1881. else
  1882. echo shar: Extracting \"'mkfaces.c'\" \(2156 characters\)
  1883. sed "s/^X//" >'mkfaces.c' <<'END_OF_FILE'
  1884. X/*
  1885. X * m k f a c e s . c
  1886. X *
  1887. X * This program reads the file with the list of smileys and writes
  1888. X * out an initialized data structure containing the smileys.
  1889. X * 
  1890. X * It assumes the smileys are each on one line, followed by a tab,
  1891. X * followed by some description.
  1892. X *
  1893. X * DaviD W. Sanderson
  1894. X */
  1895. X
  1896. X#include <stdio.h>
  1897. X
  1898. X/* avoid the possible <string.h> vs <strings.h> dilemma */
  1899. X
  1900. Xextern int
  1901. X    strcmp();
  1902. Xextern char *
  1903. X    strcpy();
  1904. X
  1905. X/* turn string into C string initialization */
  1906. X
  1907. Xstatic char    *
  1908. Xenquote(s)
  1909. X    char           *s;
  1910. X{
  1911. X    static char     ar[1024];
  1912. X    char           *t = ar;
  1913. X
  1914. X    for (; *s; s++)
  1915. X    {
  1916. X        switch (*s)
  1917. X        {
  1918. X        case '\\':
  1919. X        case '\"':
  1920. X            *t++ = '\\';
  1921. X        }
  1922. X        *t++ = *s;
  1923. X    }
  1924. X    *t = '\0';
  1925. X    return ar;
  1926. X}
  1927. X
  1928. Xint
  1929. Xmain()
  1930. X{
  1931. X    char            prev[1024];    /* previous face */
  1932. X    char            face[1024];    /* current face */
  1933. X    char            desc[1024];    /* current description */
  1934. X    char        nl[2];        /* for newline at end-of-line */
  1935. X    int             lineno = 0;    /* number of current line */
  1936. X
  1937. X    /* prologue */
  1938. X
  1939. X    (void) printf("#include \"smiley.h\"\n");
  1940. X    (void) printf("struct smiley faces[] = {\n");
  1941. X
  1942. X    /* process each smiley line */
  1943. X
  1944. X    prev[0] = 0;        /* initialize prev to null string */
  1945. X
  1946. X    /*
  1947. X     * If simply matched literal \n at the end of the string, scanf
  1948. X     * would skip leading white space on the next line.
  1949. X     * This is not what I want.
  1950. X     */
  1951. X    while (scanf("%[^\t]\t%[^\n]%[\n]", face, desc, nl) == 3)
  1952. X    {
  1953. X        if (strcmp(prev, face))
  1954. X        {
  1955. X
  1956. X            /*
  1957. X             * Since this face differs from the last one,
  1958. X             * prepare to start a new entry.
  1959. X             * 
  1960. X             * Complete the previous entry if there was one.
  1961. X             */
  1962. X            if (lineno > 0)
  1963. X            {
  1964. X                (void) fputs("\"},\n", stdout);
  1965. X            }
  1966. X
  1967. X            (void) printf("{\"%s\",\"", enquote(face));
  1968. X        }
  1969. X        else
  1970. X        {
  1971. X
  1972. X            /*
  1973. X             * Since this face is the same as the last
  1974. X             * one, simply continue the description.
  1975. X             */
  1976. X            (void) fputs("\\n\\t", stdout);
  1977. X        }
  1978. X
  1979. X        /* write the current description line */
  1980. X        (void) fputs(enquote(desc), stdout);
  1981. X
  1982. X        lineno++;
  1983. X        (void) strcpy(prev, face);
  1984. X    }
  1985. X
  1986. X    (void) fputs("\"}\n", stdout);    /* complete the last entry */
  1987. X
  1988. X    /* epilogue */
  1989. X
  1990. X    (void) printf("};\n");
  1991. X    (void) printf("int nfaces = sizeof(faces)/sizeof(struct smiley);\n");
  1992. X
  1993. X    return 0;
  1994. X}
  1995. END_OF_FILE
  1996. if test 2156 -ne `wc -c <'mkfaces.c'`; then
  1997.     echo shar: \"'mkfaces.c'\" unpacked with wrong size!
  1998. fi
  1999. # end of 'mkfaces.c'
  2000. fi
  2001. if test -f 'patchlevel.h' -a "${1}" != "-c" ; then 
  2002.   echo shar: Will not clobber existing file \"'patchlevel.h'\"
  2003. else
  2004. echo shar: Extracting \"'patchlevel.h'\" \(3851 characters\)
  2005. sed "s/^X//" >'patchlevel.h' <<'END_OF_FILE'
  2006. X/*
  2007. X * p a t c h l e v e l . h
  2008. X *
  2009. X * This header is included in only one place, so it causes no problems
  2010. X * to allocate storage for the version string here.
  2011. X *
  2012. X * DaviD W. Sanderson
  2013. X *
  2014. X * 16 Oct 91    version 4@0 sent to comp.sources.misc.
  2015. X *
  2016. X * 16 Oct 91    Added 1 from David J. Rood [rooddj@crtvax.vanderbilt.edu]
  2017. X *        via David Gundlach.
  2018. X *
  2019. X * 15 Oct 91    Added 14 from David Gundlach [david@marie.stat.uga.edu]
  2020. X *        from alt.sex.
  2021. X *
  2022. X * 29 Aug 91    Added 3 from Andrew Williams [awilliam@qucis.queensu.ca]
  2023. X *
  2024. X * 27 Aug 91    Added 1 from DJ Delorie [dj@ctron.com]
  2025. X *        Added 2 from Dave Straker [daves@hpopd.pwd.hp.com]
  2026. X *
  2027. X * 15 Jul 91    Added 1 from Craig P McLaughlin [cpm00@duts.ccc.amdahl.com]
  2028. X *
  2029. X * 12 Jul 91    Added 6 from The Grey Wolf [greywolf@unisoft.com]
  2030. X *
  2031. X * 11 Jul 91    Added 4 from Michael Cook [mlc%gva.decnet@consrt.rockwell.com]
  2032. X *
  2033. X * 10 Jul 91    Added 2 new faces to faces.in from Po-Jen J. Yang
  2034. X *        [pyang@rice.edu].  Improved README for the benefit of
  2035. X *        UNIX novices to describe how to format the man page and
  2036. X *        how to get smiley(1) to print a summary of its options.
  2037. X *        Added 1 from Peter da Silva [peter@ficc.ferranti.com].
  2038. X *        Added 2 from Charles J. Lord [cjl@ecsvax.uncecs.edu].
  2039. X *        Added 2 from Liron Lightwood [r.lightwood@trl.oz.au].
  2040. X *
  2041. X * 09 Jul 91    Added 19 new faces to faces.in from a 1984 collection
  2042. X *        mailed to me by Scott Bolte [scott@craycos.com].
  2043. X *        This collection also included two animated smileys;
  2044. X *        I saved them in "other".
  2045. X *
  2046. X * 08 Jul 91    version 3@0 sent to comp.sources.misc.
  2047. X *
  2048. X * 19 May 91    New smileys from lists recently posted to the net
  2049. X *
  2050. X * 27 Apr 91    Added new faces and definitions to faces.in from a
  2051. X *        collection mailed to me by Karl A. Nyberg
  2052. X *        [karl@grebyn.com].  This collection included some
  2053. X *        attributions, so I went through more carefully and
  2054. X *        incorporated not only the new faces but also new
  2055. X *        definitions for existing faces.  I should really go
  2056. X *        back and see whether some of the other lists also have
  2057. X *        definitions I have not yet incorporated...
  2058. X *
  2059. X *        Added count of smileys and definitions to output of -V.
  2060. X *        (Added ltoa() to generate string form of integer.
  2061. X *        smiley(1) still doesn't need stdio.)
  2062. X *
  2063. X * 23 Apr 91    version 2@0 sent to comp.sources.misc
  2064. X *
  2065. X * 23 Apr 91    Added about thirty (!) new smileys to faces.in from
  2066. X *        a new smiley list I found in rec.humor.d.
  2067. X *
  2068. X * 05 Apr 91    Used archie to locate ftp-able smiley lists;
  2069. X *        found these:
  2070. X *
  2071. X *        tolsun.oulu.fi
  2072. X *            /pub/misc/smiley.lzh    (unable to access)
  2073. X *        mrcnext.cso.uiuc.edu
  2074. X *            /ux1/doc/misc/smiley
  2075. X *        lut.fi
  2076. X *            /misc/smileys
  2077. X *        ux1.cso.uiuc.edu
  2078. X *            /doc/misc/smiley
  2079. X *        fionavar.mit.edu
  2080. X *            /pub/jokes/smiley_face
  2081. X *        sachiko.acc.stolaf.edu
  2082. X *            /home/sachiko/cdr/Doc/Fun/ai-humor/smiley_face.Z
  2083. X *        vax.ftp.com
  2084. X *            /hobbit/flamage/silly/smiley.faces
  2085. X *        mc.lcs.mit.edu
  2086. X *            /its/ai/humor/smiley.face.Z
  2087. X *
  2088. X *        There was a lot of redundancy (as I expected) but there
  2089. X *        were two new smileys for faces.in.
  2090. X *        Corrected some spelling errors in faces.in.
  2091. X *
  2092. X * 19 Mar 91    Eliminated a couple of duplicate smileys from faces.in.
  2093. X *        Updated faces.in and "others" with smileys from a recent
  2094. X *        posting to rec.humor.d.
  2095. X *        Modified smiley.c to exit with nonzero status if the
  2096. X *        search for a smiley fails.
  2097. X *        Obtained bsearch.c and modified smiley.c to use
  2098. X *        bsearch() to look for a smiley in the smiley table.
  2099. X *        Modified Makefile to sort faces.in when feeding it to
  2100. X *        mkfaces.  I keep faces.in sorted anyway, but it does not
  2101. X *        hurt to play it safe.
  2102. X *
  2103. X * 16 Mar 91    Fixed example of ps1sed() in smiley.1 not to \-quote
  2104. X *        the doubled !.  The extra quoting hurts nothing, but it
  2105. X *        is superfluous.
  2106. X *
  2107. X * 15 Mar 91    Eliminated #include of <string.h> in mkfaces.c for
  2108. X *        greater portability.
  2109. X *
  2110. X * 14 Mar 91    version 1@0 sent to comp.sources.misc
  2111. X */
  2112. X
  2113. Xstatic char version[] = " version 4 patchlevel 0: ";
  2114. END_OF_FILE
  2115. if test 3851 -ne `wc -c <'patchlevel.h'`; then
  2116.     echo shar: \"'patchlevel.h'\" unpacked with wrong size!
  2117. fi
  2118. # end of 'patchlevel.h'
  2119. fi
  2120. if test -f 'smiley.h' -a "${1}" != "-c" ; then 
  2121.   echo shar: Will not clobber existing file \"'smiley.h'\"
  2122. else
  2123. echo shar: Extracting \"'smiley.h'\" \(359 characters\)
  2124. sed "s/^X//" >'smiley.h' <<'END_OF_FILE'
  2125. X/*
  2126. X * s m i l e y . h
  2127. X *
  2128. X * DaviD W. Sanderson
  2129. X */
  2130. X
  2131. X/*
  2132. X * Each smiley has a face and a description.
  2133. X */
  2134. X
  2135. Xstruct smiley
  2136. X{
  2137. X    char *face;
  2138. X    char *desc;
  2139. X};
  2140. X
  2141. X/*
  2142. X * faces[] is the array of smileys, nfaces is the number of elements
  2143. X * in faces.
  2144. X *
  2145. X * Definitions for these are generated by mkfaces from faces.in.
  2146. X */
  2147. X
  2148. Xextern struct smiley    faces[];
  2149. Xextern int        nfaces;
  2150. END_OF_FILE
  2151. if test 359 -ne `wc -c <'smiley.h'`; then
  2152.     echo shar: \"'smiley.h'\" unpacked with wrong size!
  2153. fi
  2154. # end of 'smiley.h'
  2155. fi
  2156. echo shar: End of shell archive.
  2157. exit 0
  2158.  
  2159. exit 0 # Just in case...
  2160. -- 
  2161. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  2162. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  2163. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  2164. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  2165.